bitkeeper revision 1.1236.47.1 (424461d9MLablVR0mkl5fIg3Km-RAg)
authorcl349@firebug.cl.cam.ac.uk <cl349@firebug.cl.cam.ac.uk>
Fri, 25 Mar 2005 19:09:13 +0000 (19:09 +0000)
committercl349@firebug.cl.cam.ac.uk <cl349@firebug.cl.cam.ac.uk>
Fri, 25 Mar 2005 19:09:13 +0000 (19:09 +0000)
Fix race between sending responses to the guest frontend driver and guest
adding new requests.
Signed-off-by: Christian Limpach <Christian.Limpach@cl.cam.ac.uk>
linux-2.6.11-xen-sparse/drivers/xen/blktap/blktap.h
linux-2.6.11-xen-sparse/drivers/xen/blktap/blktap_userdev.c

index eb084e8f063a57a3ce144fa8ba7cdb5e1ed77377..a55be6c23e3b2d3c1bf01e1e672deef1ee9cfd2d 100644 (file)
@@ -30,6 +30,8 @@
 
 /* -------[ debug / pretty printing ]--------------------------------- */
 
+#define PRINTK(_f, _a...) printk(KERN_ALERT "(file=%s, line=%d) " _f, \
+                           __FILE__ , __LINE__ , ## _a )
 #if 0
 #define DPRINTK(_f, _a...) printk(KERN_ALERT "(file=%s, line=%d) " _f, \
                            __FILE__ , __LINE__ , ## _a )
index b503b1ec13ceb0d9933c6016e1fde05498e843a6..93594623b0030972c9832089e6d38300060d75b6 100644 (file)
@@ -299,7 +299,7 @@ int blktap_write_fe_ring(blkif_request_t *req)
     }
 
     if ( RING_FULL(&blktap_ufe_ring) ) {
-        DPRINTK("blktap: fe_ring is full, can't add.\n");
+        PRINTK("blktap: fe_ring is full, can't add.\n");
         return 0;
     }
 
@@ -383,10 +383,9 @@ static int blktap_read_fe_ring(void)
             zap_page_range(blktap_vma, MMAP_VADDR(ID_TO_IDX(resp_s->id), 0), 
                     ar->nr_pages << PAGE_SHIFT, NULL);
             write_resp_to_fe_ring(blkif, resp_s);
+            blktap_ufe_ring.rsp_cons = i + 1;
             kick_fe_domain(blkif);
         }
-        
-        blktap_ufe_ring.rsp_cons = i;
     }
     return 0;
 }